/**
 * 修改页面title
 * @param {String} title
 */
export const setTitle = title => {
  title = (title ? title + ' - ' : '') + '梦兮工作室'
  window.document.title = title
}

/**
 * 获取指定目录下所有的文件返回一个对象
 * @param {Array} files 指定目录下所有文件的对象
 */
export const getModule = files => {
  if (!files) return
  return files.keys().reduce((modules, modulePath) => {
    // 获取名字
    const name = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1').split('/')[0]
    // 获取配置
    const value = files(modulePath)
    modules[name] = value.default || value
    return modules
  }, {})
}

/**
 * 数组过滤
 * @param {Array} arr
 * @param {Object} params
 */
export const filterStr = (arr, params) => {
  if (!arr) return;
  const brr = arr.filter(a => {
    return a[params.txt] == params.value
  })
  return brr[0]
}

/**
 * 保留一位小数点
 * @param {*} num
 */
export const decimal = num => {
  let str = num.toString()
  let len1 = str.substr(0, 1)
  let len2 = str.substr(1, 1)
  // 如果第一位是0，第二位不是点，就用数字把点替换掉
  if (str.length > 1 && len1 == 0 && len2 != ".") str = str.substr(1, 1)
  // 第一位是点,就在前面补个零
  if (len1 == ".") str = "0."
  // 限制只能输入一个小数点
  if (str.indexOf(".") != -1) {
    var str_ = str.substr(str.indexOf(".") + 1)
    if (str_.indexOf(".") != -1) {
      str = str.substr(0, str.indexOf(".") + str_.indexOf(".") + 1)
    }
  }
  str = str.replace(/[^\d.]/g, "") //清除“数字”和“.”以外的字符
  return str
}

/**
 * 删除数组中指定的元素
 * @param {Array} arr
 * @param {String} attr
 * @param {any} val
 */
export const delListByAttr = (arr, attr, val) => {
  if (!arr) return []
  return arr.filter(elem => {
    return elem[attr] != val
  });
}

/**
 * 查询数组中指定的值
 * @param {String} str
 * @param {*} t
 */
export const isHandle = (str, t) => {
  if (!str) return;
  let s = str.replace(/{/g, "").replace(/}/g, "");
  let arr = s.split(",") || [];
  return arr.indexOf(t.toString()) != -1;
}

/**
 * 天时分秒计算
 * @param {Number} s
 */
export const getTime = s => {
  let day = Math.floor(s / (24 * 3600));
  let hour = Math.floor((s - day * 24 * 3600) / 3600);
  let minute = Math.floor((s - day * 24 * 3600 - hour * 3600) / 60);
  let second = s - day * 24 * 3600 - hour * 3600 - minute * 60;
  return {
    day,
    hour,
    minute,
    second
  };
}

/**
 * 获取滚动条滚动距离
 */
export const getScrollTop = () => {
  return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
}

/**
 * 获取文档内容实际高度（包括超出视窗的溢出部分）
 */
export const getScrollHeight = () => {
  return Math.max(
    document.documentElement.scrollHeight,
    document.body.scrollHeight
  )
}

/**
 * 获取窗口可视范围高度
 */
export const getClientHeight = () => {
  return window.innerHeight || Math.min(
    document.documentElement.clientHeight,
    document.body.clientHeight
  )
}

/**
 * 文件转换
 * @param {String} dataurl
 * @param {String} filename
 */
export const dataURLtoFile = (dataurl, filename) => {
  var arr = dataurl.split(","),
    mime = arr[0].match(/:(.*?);/)[1],
    bstr = atob(arr[1]),
    n = bstr.length,
    u8arr = new Uint8Array(n);
  while (n--) {
    u8arr[n] = bstr.charCodeAt(n);
  }
  return new File([u8arr], filename, { type: mime });
}
